package org.example;

import com.github.tomakehurst.wiremock.WireMockServer;
import com.github.tomakehurst.wiremock.client.WireMock;
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;

import static com.github.tomakehurst.wiremock.client.WireMock.*;
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;

public class Main {
    public static void main(String[] args) {
        // 创建 WireMockServer 实例，并指定端口
        WireMockServer wireMockServer = new WireMockServer(
                WireMockConfiguration.options()
                        .httpsPort(8443)  // HTTPS 端口
                        .keystorePath("keystore.jks")  // 证书库路径
                        .keystorePassword("password"));  // 证书库密码


        // 启动服务器
        wireMockServer.start();


        stubFor(post(urlEqualTo("/api/login/code"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{"
                                + "\"success\": true,"
                                + "\"data\":{\"userId\":\"user2\",\"userName\":\"USERNAME\",\"token\":\"abc123\",\"phone\":\"13520427075\",\"isInitPwd\":false,\"promoCode\":\"123ABC\",\"member\":{\"userId\":\"user2\",\"vip_type\":\"NOMAL\",\"expiry_date\":null,\"recharge_amount\":0.0}}"
                                + "}")));

        stubFor(post(urlEqualTo("/api/login/password"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{"
                                + "\"success\": true,"
                                + "\"data\":{\"userId\":\"user1\",\"userName\":\"USERNAME\",\"token\":\"abc123\",\"phone\":\"18846817074\",\"isInitPwd\":true,\"promoCode\":\"123ABC\",\"member\":{\"userId\":\"user1\",\"vip_type\":\"VIP1\",\"expiry_date\":\"永久\",\"recharge_amount\":1.0}}"
                                + "}")));
        stubFor(get(urlPathEqualTo("/api/balance"))
                .withQueryParam("user_id", equalTo("user1"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{"
                                + "\"success\": true,"
                                + "\"data\":{\"available_balance\":999.0,\"withdrawn_balance\":888.0,\"update_time\":1,\"isWithdrawing\":false}"
                                + "}")));
        stubFor(get(urlPathEqualTo("/api/balance"))
                .withQueryParam("user_id", equalTo("user2"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{"
                                + "\"success\": true,"
                                + "\"data\":{\"available_balance\":99.0,\"withdrawn_balance\":88.0,\"update_time\":1,\"isWithdrawing\":false}"
                                + "}")));

        stubFor(get(urlPathEqualTo("/api/send-code"))
                .withQueryParam("phone", matching(".*"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true}")));
        stubFor(get(urlPathEqualTo("/api/payment/result"))
                .withQueryParam("orderId", matching(".*"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true,\"data\":{\"orderId\":\"orderId1\",\"status\":\"SUCCESS\",\"message\":\"\",\"payTime\":{\"date\":{\"year\":2025,\"month\":9,\"day\":10},\"time\":{\"hour\":16,\"minute\":1,\"second\":45,\"nano\":762000000}}}}")));
        stubFor(get(urlPathEqualTo("/api/user/check-member"))
                .withQueryParam("userId", matching(".*"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true,\"data\":{\"userId\":\"user1\",\"vip_type\":\"VIP1\",\"expiry_date\":\"永久\",\"recharge_amount\":999.0}}")));

        stubFor(post(urlEqualTo("/api/payment/create"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody(
                                "{\"success\":true,\"data\":{\"orderId\":\"order1\",\"alipayQrCode\":\"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\\u003d\",\"wechatQrCode\":\"iVBORw0KGgoAAAANSUhEUgAAAFUAAABVCAIAAAC3lz8NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEEUlEQVR4nO2asWrrOhiAfQ73HRJoX8BDDIY8gAfhJWg2KFk9eqgHTR49FEPcwWMgU13wbLIUDXmAgqky5AVaiAp9hzv8IHxsx3bS23PORfqG4kSypc/6/19q6Y/Pz09DYX7+6Qn8YbS/2mh/tdH+aqP91Ub7q432VxvtrzbaX220v9pof7XR/mqj/dVG+6uN9lebv9qfUpqm6bcOMcqfc04phWvGGCGk3koIyfO880bTNBtNhBDG2Bcm3E3PHNI0lZNvM8r//v7edV1CCOdcfkkpBZOqqiaTSfsu6IwQqn+5WCyCIBBCjBl3JJzzqqpms9kV9/4z2APeK0Jou922W8Gkc+zHx0ff99frdVmWjSbHceofb25u3t/fz01gs9m0v4yiaLlcwjVjDGNsWdagS5sBf855HMf7/f5ch8PhYNt2e/2FEGVZFkVhWVaSJFfMDEJsOp2GYdjTRwix2WyyLLtuiD5/zrnneVmWMcZ2u51hGJ7nQZNpmoZhuK4LsQcfDcOwbfvp6Qmixrbt69bkIiAHZ7MZpbQdaBJoyrKskY99/pZl+b6PECKELBYLGW8AFJXNZgOhyBjbbrcgD2ti27bs2TMz3/f7V7gHIUQcx3CdJElnoKVpejqdzsXgQPyHYcgYq6oKxOokSQLvHkqAEOL29haa1ut1o+dgCgghGkVBUs9/GV+dA13BcP0PgsD3fQhp81een5+hyTCM19fX6XQKAVmWZRRFF81jMpkcj0coNFmWHVtA03w+l7fAQPXMF0I09uZBBta/fvxYLpeNFIAh7+7uDMN4e3tzXReqRlEUh8NB9hkf/5PJxPf97XbbyFK5DdUzBQZqTKaqqjzP2/M8R58/Y+zl5QVj3NMHKn99B4Yp1v3HxL8kDEM4NdUdGGPtIg8D1Y8klmVlWRYEAUKo80jSpi/+OecPDw/1SdSDX5635vO553kY45FDDlIURRzHUkwIATnYDoo2CCGM8fi60OcfhmFbCbJR1nZ467AXnntOu3B0vsf6A7Ms8zxPCME5dxwHYzx+j1itVj3p1mD4/NcDpXS1Wsn639OzUbcl58oVQqgoCtgRMMYXnaAsyzoejyM7X/D7nxBC1oKqqmDj/fj4iOM4iqJ6xH4RzrlpmpBTcHT5r57c5oL1j+MYKhDMJooihJDjOPIo7nne+BffiTxHyoMarDwhpKoqyL5Ln3k6nWBj7mSsf5qmGGOYkwwwQoiUh5+U0s5YrZ+RGywWC7lB7vf7ziIqc0c+pP/UyBgLgkB+7HlrP77p/9/zPN/tdvJ3AXndoPNk/Tv5Lv//C3/1379+A9pfbbS/2mh/tdH+aqP91Ub7q432VxvtrzbaX220v9pof7XR/mqj/dVG+6uN9lcb7a822l9tVPf/F+enHUxxIcEiAAAAAElFTkSuQmCC\",\"expireTime\":0,\"qrCodeValidity\":0}}"
                        )));

        stubFor(post(urlEqualTo("/api/payment/cancel"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true}")));

        stubFor(post(urlEqualTo("/api/user/update-phone"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true}")));
        stubFor(post(urlEqualTo("/api/user/update-password"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true}")));
        stubFor(post(urlEqualTo("/api/user/update-avatar"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true}")));
        stubFor(post(urlEqualTo("/api/user/update-userName"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true}")));
        stubFor(post(urlEqualTo("/api/withdraw"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"success\":true}")));
        stubFor(get(urlPathEqualTo("/api/version"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"version\":2.0.0}")));
        stubFor(get(urlPathEqualTo("/api/upgradeMessage"))
                .withQueryParam("currentVersion", matching("1.0.0"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"upgradeFeature\":\"1.组件升级\\n2.AI一二布布\",\"force\":false,\"patch\":true}")));
        stubFor(get(urlPathEqualTo("/api/get-dub"))
                .withQueryParam("page_num", matching("1"))
                .withQueryParam("page_size", matching("20"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"hasMore\":true,\"dubs\":{\"湾区大叔\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_wanqudashu_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dKSNNbkkTKOKqvkTeqHECmPC7vlw%3D\",\"呆萌川妹\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_daimengchuanmei_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dXjwJLP%2FRcrpqIlo2vClnLKWVM1k%3D\",\"广州德哥\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_guozhoudege_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003deDUY%2FZtWZnJ8%2BqL0Y1zvjyg%2B548%3D\",\"北京小爷\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_beijingxiaoye_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003deOr124K5OGBm4iLG178aGYMFR%2B8%3D\",\"少年梓辛\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_shaonianzixin_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dsIJkS47nbPw7JYqf3yjdgzp79P0%3D\",\"Brayan\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_shaonianzixin_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003diVYYtBpIlaFYtlPne9y29PfYuQU%3D\",\"魅力女友\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_meilinvyou_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dV6mEXfapgN%2FIH513KmGabC6R4kE%3D\",\"深夜播客\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_shenyeboke_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dNCvcfnjYmhUcwBIMCCnoLNfmtxo%3D\",\"柔美女友\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_sajiaonvyou_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dLUvf2alFyzcOXvlaOjhQcZgVCQA%3D\",\"撒娇学妹\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_yuanqinvyou_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003d03ag8a%2B2Ogke1BEsfEMbM%2B7X9QY%3D\",\"浩宇小哥\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_haoyuxiaoge_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dII6gRAGncq%2Fvc9%2FYpOcaETo5gd8%3D\",\"广西远舟\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_guangxiyuanzhou_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dgXNd47EMeqnmtJjP3%2BPkL2zzXOg%3D\",\"妹坨洁儿\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_meituojieer_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dhEqNzbRRwZDZePJiuQoKSHYi6%2Bw%3D\",\"豫州子轩\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_yuzhouzixuan_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003d0vB%2BewuIEkrVIXRkOY7WsTjuMc8%3D\",\"邻家女孩\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_linjianvhai_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dnL%2ByBZSmu8kCR63nEXaqJo%2B5g4A%3D\",\"高冷御姐\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_gaolengyujie_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003djxzKA7kUNh%2Bd6U2mp5a5m1F8kwM%3D\",\"渊博小叔\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_yuanboxiaoshu_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dzqets3MH48xhY49aiXUxKBQMGWw%3D\",\"阳光青年\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_yangguangqingnian_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dZMWMTlVgtpbz5oASD6ma240FHXQ%3D\",\"傲娇霸总\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_aojiaobazong_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dxURTZyGiA8dyk9AQ7uKVXDU2Wjw%3D\",\"京腔侃爷\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_jingqiangkanye_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290461\\u0026x-signature\\u003dIz7k2apDoIPvd1UUlzD5Fvr%2FqKk%3D\"}}")));
        stubFor(get(urlPathEqualTo("/api/get-dub"))
                .withQueryParam("page_num", matching("2"))
                .withQueryParam("page_size", matching("20"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"hasMore\":true,\"dubs\":{\"Harmony\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_jingqiangkanye_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003d8eWQ%2BixmvH5pFzXZqOUZiEf%2FS18%3D\",\"爽快思思\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_shuangkuaisisi_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dFESbSbt63Fe9G1W%2FPcFG%2Fm3MiAw%3D\",\"Skye\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_shuangkuaisisi_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003d1g%2BU9p%2Be5LUN1rjIf4hE%2FsSehbY%3D\",\"Alvin\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_wennuanahu_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dlh8E1FtDvb%2FOso9%2BpE6orQyUsLo%3D\",\"温暖阿虎\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_wennuanahu_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dBtUJt4jKfvCUYyCYy46k0G9exOQ%3D\",\"湾湾小何\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_wanwanxiaohe_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dVdbg%2BRPj%2FMbWQmF9bblwt%2BKIXXA%3D\",\"はるこ\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/multi_female_shuangkuaisisi_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dC9YwkQGRJoddyq%2B7OEm7UHdcRvI%3D\",\"Esmeralda\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/multi_female_shuangkuaisisi_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dD5eK%2BTGTszNJEtfvotFupZdqYFE%3D\",\"かずね\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/multi_male_jingqiangkanye_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dEXMeM4c7P1VIRvu0NIKr2wHGYCY%3D\",\"Javier or Álvaro\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/multi_male_jingqiangkanye_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003d%2BqpuHU2TFgPXZmwnpcR2laKY1ZM%3D\",\"あけみ\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/multi_female_gaolengyujie_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dZE69uS7dOgpZyeDfXDBc%2FC%2Fm%2BdY%3D\",\"ひろし\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/multi_male_wanqudashu_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dV0pzMBVsY7R4G21l2qgilp3z5is%3D\",\"Roberto\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/multi_male_wanqudashu_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dV0pzMBVsY7R4G21l2qgilp3z5is%3D\",\"病弱少女\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/ICL_zh_female_bingruoshaonv_tob.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dmTYkaaHGLZ9DCRtHHZj5GAVvmi0%3D\",\"活泼女孩\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/ICL_zh_female_huoponvhai_tob.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dT%2B6agxePiz%2B6SfR3WsH%2BRTqIrkk%3D\",\"和蔼奶奶\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/ICL_zh_female_heainainai_tob.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003djLUyHIgW0QZpIMmBs1IMa7pWj6I%3D\",\"邻居阿姨\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/ICL_zh_female_linjuayi_tob.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003d4s7RYDC3%2BR0FHVUINLum%2FLWNZ5U%3D\",\"温柔小雅\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_wenrouxiaoya_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003ds9T6KEM7jMrLsfRB9y4PzFr9gAk%3D\",\"甜美小源\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_tianmeixiaoyuan_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003d9zqeXRnRLVHS1%2FYLOaREI7SnIGw%3D\",\"清澈梓梓\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_qingchezizi_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290720\\u0026x-signature\\u003dpW1BUgp%2FlWWrjR53J%2B7YAudaNz0%3D\"}}")));
        stubFor(get(urlPathEqualTo("/api/get-dub"))
                .withQueryParam("page_num", matching("3"))
                .withQueryParam("page_size", matching("20"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"hasMore\":false,\"dubs\":{\"东方浩然\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_dongfanghaoran_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dOME9tfPVF2jjCR7IwXCwCXsXeio%3D\",\"解说小明\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_jieshuoxiaoming_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003d5P4NV0A4gjELYcLESKqMqXbRPw0%3D\",\"开朗姐姐\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_kailangjiejie_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dVorMYmZmML4US0beLCci11gzSPs%3D\",\"邻家男孩\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_linjiananhai_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dA%2B2upfyf53a4eiiOCrqOxaqQ36E%3D\",\"甜美悦悦\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_tianmeiyueyue_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dNFEqG4%2BN1gSP%2FYVqnPyaeYSPurE%3D\",\"心灵鸡汤\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_xinlingjitang_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dmZ26%2F8ScHqbf8oJ29Z8BmKMtk%2Bc%3D\",\"灿灿\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_cancan_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003d%2BBFF8wi%2B7YRZK7vMXqSiuPSm5mU%3D\",\"Shiny\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_cancan_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dphlQdYZXyt2rsaoNkxLpbrNyHGM%3D\",\"Anna\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/en_female_anna_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dKjhiIPrd3F9xCjlNcrlmd7pTYmc%3D\",\"天才童声\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_tiancaitongsheng_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dbTAJ1YcaiTJVn9D6RRFjQGXP%2BWw%3D\",\"奶气萌娃\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_naiqimengwa_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dtJVebXsXhVRq61SaJ6ux0WrGajw%3D\",\"猴哥\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_sunwukong_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003d794vZC3aS7TSnhdH%2BoIIpIj5TwU%3D\",\"熊二\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_xionger_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dCFhJjJWB8MH6lHLUchAWyE56AoQ%3D\",\"佩奇猪\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_peiqi_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dvOWJ73%2FhBWntP%2BJko%2FWwOdTmNOI%3D\",\"知性女声\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_zhixingnvsheng_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003d0%2BOlNY%2BWbZZFh5kysJ6zg4vGA%2B0%3D\",\"清新女声\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_qingxinnvsheng_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dQg87CZVvQgAFCC7oW2ltjLfTtx8%3D\",\"悬疑解说\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_changtianyi_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dSc8uRdgARtT%2FuqFXLY3pteb1HNo%3D\",\"婆婆\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_popo_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dLFmVVW5%2BewZSHxefAyLXgfaraM8%3D\",\"武则天\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_wuzetian_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dwxm1wpFZMlnxNoOKvuYcaL%2Bv3PA%3D\",\"邻家小妹\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_linjia_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dBPHGprP9%2FArw6AZsCqF0zeFZOuY%3D\"}}\n")));
        stubFor(get(urlPathEqualTo("/api/search-dub"))
                .withQueryParam("keyword", matching("111"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"hasMore\":false,\"dubs\":{\"东方浩然\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_dongfanghaoran_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dOME9tfPVF2jjCR7IwXCwCXsXeio%3D\",\"解说小明\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_jieshuoxiaoming_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003d5P4NV0A4gjELYcLESKqMqXbRPw0%3D\",\"开朗姐姐\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_kailangjiejie_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dVorMYmZmML4US0beLCci11gzSPs%3D\",\"邻家男孩\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_linjiananhai_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dA%2B2upfyf53a4eiiOCrqOxaqQ36E%3D\",\"甜美悦悦\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_tianmeiyueyue_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dNFEqG4%2BN1gSP%2FYVqnPyaeYSPurE%3D\",\"心灵鸡汤\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_xinlingjitang_moon_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dmZ26%2F8ScHqbf8oJ29Z8BmKMtk%2Bc%3D\",\"灿灿\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_cancan_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003d%2BBFF8wi%2B7YRZK7vMXqSiuPSm5mU%3D\",\"Shiny\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_cancan_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dphlQdYZXyt2rsaoNkxLpbrNyHGM%3D\",\"Anna\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/en_female_anna_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dKjhiIPrd3F9xCjlNcrlmd7pTYmc%3D\",\"天才童声\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_tiancaitongsheng_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dbTAJ1YcaiTJVn9D6RRFjQGXP%2BWw%3D\",\"奶气萌娃\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_naiqimengwa_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dtJVebXsXhVRq61SaJ6ux0WrGajw%3D\",\"猴哥\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_sunwukong_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003d794vZC3aS7TSnhdH%2BoIIpIj5TwU%3D\",\"熊二\":\"https://lf6-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_xionger_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dCFhJjJWB8MH6lHLUchAWyE56AoQ%3D\",\"佩奇猪\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_peiqi_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dvOWJ73%2FhBWntP%2BJko%2FWwOdTmNOI%3D\",\"知性女声\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_zhixingnvsheng_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003d0%2BOlNY%2BWbZZFh5kysJ6zg4vGA%2B0%3D\",\"清新女声\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_qingxinnvsheng_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dQg87CZVvQgAFCC7oW2ltjLfTtx8%3D\",\"悬疑解说\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_male_changtianyi_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dSc8uRdgARtT%2FuqFXLY3pteb1HNo%3D\",\"婆婆\":\"https://lf26-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_popo_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dLFmVVW5%2BewZSHxefAyLXgfaraM8%3D\",\"武则天\":\"https://lf9-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_wuzetian_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dwxm1wpFZMlnxNoOKvuYcaL%2Bv3PA%3D\",\"邻家小妹\":\"https://lf3-appstore-sign.oceancloudapi.com/ocean-cloud-tos/VolcanoSystemVoice/zh_female_linjia_mars_bigtts.mp3?lk3s\\u003dda27ec82\\u0026x-expires\\u003d1761290750\\u0026x-signature\\u003dBPHGprP9%2FArw6AZsCqF0zeFZOuY%3D\"}}\n")));
        stubFor(get(urlPathEqualTo("/api/search-dub"))
                .withQueryParam("keyword", matching("222"))
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type", "application/json")
                        .withBody("{\"hasMore\":false,\"dubs\":{}}\n")));


        // 启动服务器
        System.out.println("WireMock server started...");
    }
}